#include "stm32f10x.h"
#include "systick.h"
#include "key.h"

void Key_init(){
	
     RCC_APB2PeriphClockCmd(Key_PORT_RCC,ENABLE); //使能是GPIOA
	
	   RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);	// 使能 AFIO 时钟
     GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);// 关闭JTAG 和 SWD 功能
     GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, ENABLE);	// 关闭JTAG 和 SWD 功能
	
	   GPIO_InitTypeDef GPIO_InitStruct;
	   GPIO_InitStruct.GPIO_Pin = Key1_PIN | Key2_PIN| Key3_PIN| Key4_PIN;
	   GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IPU;
	
	   GPIO_Init(Key_PORT ,&GPIO_InitStruct);  //初始化gpioa
	
}

//函数返回按下的是哪个按键，考虑延时消抖操作
u8 Key_scan(u8 mode){
	//mode=1，表示长按算多次,led闪烁；mode = 0，表示长按算1次,led常亮
  static u8 flag=1;
	//key1==0表示按下，key1==1表示断开
	//key1-4,其中任意有一个按键被按下
	if((mode || flag)&&(Key1==0 || Key2==0 || Key3==0|| Key4==0)){
		 delay_ms(10);
		 flag = 0;
		 if(Key1==0) return Key1_press;
		 if(Key2==0) return Key2_press;
		 if(Key3==0) return Key3_press;
		 if(Key4==0) return Key4_press;
	}
	//key1-key4全部都是断开
	else if(Key1==1 && Key2==1 && Key3==1&& Key4==1){
		 delay_ms(10);
		 if(Key1==1 && Key2==1 && Key3==1 && Key4==1){
			 flag = 1;
		 }
	}
	return 0;
}